function fallbackCopyTextToClipboard(text) {
  var textArea = document.createElement("textarea")
  textArea.value = text
  
  // Avoid scrolling to bottom
  textArea.style.top = "0"
  textArea.style.left = "0"
  textArea.style.position = "fixed"
  
  document.body.appendChild(textArea)
  textArea.focus()
  textArea.select()
  
  try {
    var successful = document.execCommand('copy')
    var msg = successful ? 'successful' : 'unsuccessful'
    console.log('Fallback: Copying text command was ' + msg)
  } catch (err) {
    console.error('Fallback: Oops, unable to copy', err)
  }
  
  document.body.removeChild(textArea)
}

export function copyTextToClipboard(text) {
  if (!navigator.clipboard) {
    fallbackCopyTextToClipboard(text)
    return
  }
  navigator.clipboard.writeText(text).then(function () {
    console.log('Async: Copying to clipboard was successful!')
  }, function (err) {
    console.error('Async: Could not copy text: ', err)
  })
}

// promise 的并法控制
export async function Scheduler(promises, limit) {
  const results = []
  for (let i = 0; i < promises; i += limit) {
    const tasks = []
    for (const promise of promises.slice(i, i + limit)) {
      tasks.push(promise)
    }
    
    const result = await Promise.all(tasks)
    results.push(...result)
  }
  
  return results
}